//Eg8-11.cpp
#include <iostream>
using namespace std;
const int MAX=3;
class Full{
    int a;
public:
    Full(int i):a(i){}
    int getValue(){return a;}
};
class Empty{};
class Stack{
private:
    int s[MAX];
    int top;
public:
    Stack()
	{
		top=-1;
	}
    void push(int a)
	{
        if(top>=MAX-1)  
			throw Full(a);								//L1
        s[++top]=a;
    }
    int pop()
	{
        if(top<0)
			throw Empty();
        return s[top--];
    }
};
void main(){
    Stack s;
    try{
        s.push(10);  
		s.push(20);
        s.push(30);  
		s.push(40);										//L2
    }
    catch(Full e)
	{										//L3
        cout<<"Exception: Stack Full..."<<endl;
        cout<<"The value not push in stack:  "<<e.getValue()<<endl; //L4
    }
}
